package livret.modele;

import java.util.*;

/**
 * C'est la classe qui désigne la formation
 * Elle contient les informations nécéssaires sur une formation
 * Elle contient une liste d'étudiant et une lis de modules
 * @author Solohery RAMANANARIVO, Fawzia CHABOUNI, Luc RABARIJAONA
 */
public class Formation {
   private String id_formation;
   private String libelle;
   public ArrayList<Etudiant> etudiants;
   public ArrayList<Cours> cours;
   
   public Formation(String libelleFormation) {
      this.libelle = libelleFormation;
      etudiants = new ArrayList<Etudiant>();
   }



   /**
    */
   public String getIdFormation() {
      return id_formation;
   }

   /** Modifie l'id de la formation
    * @param newIdFormation
    */
   public void setIdFormation(String newIdFormation) {
      id_formation = newIdFormation;
   }


   /** Retourne la liste des étudiants de la formation
    * @return la liste des étudiants
    */
   public ArrayList<Etudiant> getEtudiants() {
      if (etudiants == null)
         etudiants = new ArrayList<Etudiant>();
      return etudiants;
   }

   /**Retourne un itérateur de liste d'étudiant
    * @return un iterateur
    */
   public Iterator getIteratorEtudiants() {
      if (etudiants == null)
         etudiants = new ArrayList<Etudiant>();
      return etudiants.iterator();
   }

   /** Modifie la liste des étudiants
     * @param newEtudiants */
   public void setEtudiants(ArrayList<Etudiant> newEtudiants) {
      removeAllEtudiants();
      for (Iterator iter = newEtudiants.iterator(); iter.hasNext();)
         addEtudiants((Etudiant)iter.next());
   }

   /** Ajoute un étudiant dans la formation
     * @param newEtudiant */
   public void addEtudiants(Etudiant newEtudiant) {
      if (newEtudiant == null)
         return;
      if (this.etudiants == null)
         this.etudiants = new ArrayList<Etudiant>();
      if (!this.etudiants.contains(newEtudiant))
         this.etudiants.add(newEtudiant);
   }

   /** Supprime un étudiant dans la formation
     * @param oldEtudiant */
   public void removeEtudiants(Etudiant oldEtudiant) {
      if (oldEtudiant == null)
         return;
      if (this.etudiants != null)
         if (this.etudiants.contains(oldEtudiant))
            this.etudiants.remove(oldEtudiant);
   }

   /** Supprime tous les étudiants d'une formation */
   public void removeAllEtudiants() {
      if (etudiants != null)
         etudiants.clear();
   }
   /** Retourne la liste des matières d'une formation
    * @return Liste de Matière
    */
   public ArrayList<Cours> getMatieres() {
      if (cours == null)
         cours = new ArrayList<Cours>();
      return cours;
   }

}